Escritura de expresiones ?, II
Más en general, si una expresión se aplica a varios argumentos y uno de ellos es a su vez una expresión no atómica, este argumento se debe poner entre paréntesis.
Así, E(FG)H denota (E(FG))H , o sea la aplicación de E a los argumentos FG y H, mientras que EFGH denotaría (((EF)G)H), es decir la aplicación de E a los tres argumentos F, G y H.
Representación de expresiones ? como árboles binarios
Una expresión ? se puede representar mediante su árbol binario de análisis sintáctico (sin paréntesis), cuyos nodos pueden ser de tipo ? (abstración), ? (áplicación) o variable (son las hojas)
Ejemplo:
(?x.?y.x y)(?u.v)z
(Gp:) ?
(Gp:) ?
(Gp:) x
(Gp:) y
(Gp:) ?
(Gp:) x
(Gp:) y
(Gp:) ?
(Gp:) ?
(Gp:) ?
(Gp:) v
(Gp:) u
(Gp:) z
Cálculo ?: Ambitos de variables
Mínima función ? que la contiene y en la que aparece como argumento.
Ejemplos
(?x.?y.x y)(?u.v)z
(?x.?y.x y)(?u.v)z
(?x.?y.x y)(?u.v)z Ámbito global
Es semejante al ámbito en un programa
Cálculo ?: Ambitos devariables, II
Si se sustituye en una expresión ? una variable cuyo ámbito no es global por otra nueva, la expresión resultante es equivalente
Ejemplo: ?x.zx es equivalente a ?y.zy, pero no es equivalente a ?x.yx ni a ?z.zx
Ámbitos de variables: Ejemplo
(?x.?z.x(?x.zx))x
(Gp:) ?
(Gp:) ?
(Gp:) x
(Gp:) z
(Gp:) ?
(Gp:) x
(Gp:) ?
(Gp:) ?
(Gp:) x
(Gp:) x
(Gp:) ?
(Gp:) z
(Gp:) x
Ambitos de variables: Ejemplo, II
En el ejemplo anterior la variable x tiene ámbitos anidados (el segundo está contenido en el primero, que a su vez lo está en el global), lo que dificulta la sustitución y la evaluación de expresiones.
La evaluación de expresiones y la sustitución de variables es más sencilla cuando no hay ámbitos anidados.
Al igual que en programación, conviene evitar los ámbitos anidados de variables sustituyéndolas por otras.
Expresiones simples
Una expresión ? es simple si cada variable aparece en un solo contexto
Esta condición es más fuerte que la exigencia de que no haya ámbitos anidados; es análoga a pedir que en un programa cada variable aparezca en un solo bloque.
Ejemplos:
(?x.?z.x ?x.z x) z no es simple
(?x.?u.x ?y.u y) z es simple
Expresiones simples, II
En cualquier expresión ? se pueden renombrar las variables de modo que la expresión resultante, equivalente a la inicial, sea simple
Para ello basta con sustituir desde los ámbitos más restringidos a los más amplios las variables con ámbitos múltiples por variables nuevas.
Ejemplo: (?x.?z.x ?x.z x) z ? (?x.?z.x ?y.z y) z ? (?x.?u.x ?y.u y) z
Evaluación de expresiones simples
Dentro de una expresión simple, la aplicación de una función ? a otra subexpresión se evalúa mediante sustitución, rodeando el argumento de paréntesis si es necesario.
Ejemplos:
(?x.?u.x ?y.u y) z ? ?u.z ?y.u y
(?x.?u.x ?y.u y) ?w.w ? ?u. (?w.w) ?y.u y
El resultado de la evaluación de una expresión simple puede no ser simple. Ejemplo:
(?x.(?y.x) x) ?u.u ? (?y.?u.u) ?u.u
Procedimiento de evaluación total de expresiones ?
Para evaluar una expresión se puede hacer repetidamente lo siguiente:
Simplificar
Evaluar una subexpresión que sea la aplicación de una función ? a otra expresión, sustituyendo la subexprésión evaluada por el resultado (incluyendo paréntesis alrededor si hace falta).
Procedimiento de evaluación total de expresiones ?: Ejemplo
(?x.(?u.x u) x) x ?
(?y.(?u.y u) y) x ?
(?u.x u) x ? x x
Otra forma de hacerlo:
(?x.(?u.x u) x) x ?
(?y.(?u.y u) y) x ?
(?y.y y) x ? x x
Ejercicios obligatorios
Evaluar lo más posible las siguientes expresiones:
[EVAL1] (?x.?y.x y) (?u.u u) v
[EVAL2] (?u.u) (?x.?y.x y) v
Pasar a forma simple las siguientes expresiones:
[SIMPL1] (?x.?y.x(?x.yx))(?u.uxu)x
[SIMPL2] ?x.?x.?x.xxx
EJERCICIO OPTATIVO
[EVAL LAMBDA] Escribir un programa que evalúe expresiones ? de la forma (?x.E)F.
No terminación de laevaluación total
El procedimiento de evaluación total de expresiones ? puede no terminar nunca.
Ejemplo:
(?x.xx)(?y.yy)
al evaluarla una vez da ella misma: (?y.yy)(?y.yy)
Cálculo ?: Reglas de equivalencia
Lo anterior justifica definir la evaluación como una regla de equivalencia.
Las siguientes reglas permiten obtener expresiones ? equivalentes a otras dadas:
Regla ?: Sustitución de variables por otras (en particular, la conversión en expresiones simples)
Regla ? (evaluación): Aplicación de funciones
Regla ? (concreción): Equivalencia de ?x.Ex con E si x no es una variable libre de E
Cálculo ?: Forma normal
Se dice que una expresión ? está en forma normal si no se le puede aplicar ninguna regla de evaluación o concreción.
Según hemos visto, hay expresiones ? que no son equivalentes a ninguna otra que esté en forma normal.
Forma normal, II
Hay expresiones ? equivalentes a otra en forma normal que admiten evaluaciones indefinidas de subexpresiones suyas.
Ejemplo: (?x.?y.x) u ((?v.v v) ?w.ww)
Si se evalúa primero el último paréntesis se obtiene una expresión equivalente a la inicial, y por lo tanto se puede continuar realizando la misma operación indefinidamente.
Si se evalúa la primera función ?, se obtiene ?y.u ((?v.vv) ?w.ww), y evaluando de nuevo la primera función ? se obtiene u, que está en forma normal.
Ejercicio obligatorio
[FNINF] Demostrar que la siguiente expresión ? admite infinitas evaluaciones consecutivas sin que se llegue a una forma normal, pero también se puede evaluar dando lugar a una forma normal:
(?a.?b.b) ((?x.y(x x)) (?u.v(u u)) ?w.w
Unicidad de la forma normal
Teorema de Church-Rosser: Si una expresión ? se puede transformar mediante aplicaciones sucesivas de reducciónes ?, ? y ? en dos expresiones en forma normal, éstas se pueden transformar una en la otra mediante transformaciones ?.
Teorema de Church-Rosser:Idea de la demostración
Si una expresión ? simple incluye dos aplicaciones de función que se pueden evaluar, el orden de evaluación de las mismas es indiferente.
Reducción a tres casos
Primer caso: Funciones con ámbitos disjuntos
((?x.xx)u)((?y.yy)v)
Teorema de Church-Rosser:Segundo caso
Una de las aplicaciones está contenida en el argumento de la otra:
(?x.xux)((?y.ywy)v) (?x.xux)(vwv)
((?y.ywy)v)u((?y.ywy)v) (vwv)u(vwv)
Teorema de Church-Rosser:Tercer caso
Una de las dos aplicaciones está conteni-da en el cuerpo de la función de la otra:
(?x.(((?y.yy)u))xxx)v (?x.((uu)xxx))v
((?y.yy)u)vvv (uu)vvv
Teorema de Church-Rosser:Caso general
Análogo a uno de los tres anteriores, con árboles arbitrarios en lugar de u, v, w y en lugar de los cuerpos de las funciones
Cálculo ?: Normalización
Teorema de normalización: Dada una expresión ?, si existe otra expresión en forma normal equivalente a ella, se puede obtener mediante evaluación total de izquierda a derecha, como sigue:
Si hay alguna subexpresión de la expresión dada que sea una función ? y a la que se le pueda aplicar evaluación o concreción, hacerlo sobre la primera de ellas.
Simplificar el resultado y repetir lo anterior sobre las expresiones resultantes mientras ello sea posible.
Potencia computacional del Cálculo ?
Se puede representar la lógica booleana y las operaciones aritméticas mediante expresiones ?
Idea de la demostración: Ver la hoja de problemas número 1
Forma de la representación:
T,F???; ?,?,?,????
0, S,P,N??? ? N???
Definición de funciones recursivas (+, *, …)
Recursividad en el Cálculo ?
Teorema del punto fijo (Turing): Para cada expresión E hay otra expresión F que verifica que EF ? F
Demostración: Tomamos
F ? (?x.E(xx))(?y.E(yy))
Evaluando la aplicación tenemos que
F ? E((?y.E(yy))(?y.E(yy))) ? EF
Recursividad en el Cálculo ?, II
Observación:
El punto fijo de Turing se calcula aplicando una función fija Y, llamada combinador de punto fijo de Turing, a la función cuyo punto fijo se quiere calcular.
Concretamente, F ? YE, donde
Y ? ?E.(?x.E(xx))(?y.E(yy))
YE habitualmente no tiene forma normal, pero YEH puede tenerla para algunas H
Definición de funciones recursivas en el Cálculo ?
Ejemplo: Suma
Definición recursiva primitiva habitual:
x+y = (x==0) ? y : ((x-1)+y)+1
La traducimos al Cálculo ? en forma de punto fijo:
+xy ? ? (Nx) y (S(+(Px) y))
+ ? ?x.?y.? (Nx) y (S(+(Px) y)) ?
? (?G.?x.?y.?(Nx)y(S(G(Px) y)))+
Definición de funciones recursivas en el Cálculo ?, II
La solución sería el punto fijo asociado:
+ ? YE ? Y(?G.?x.?y.?(Nx)y(S(G(Px)y)))
Si sustituimos Y por su valor obtenemos una expresión sin forma normal (cada evaluación la complica más)
Pero si aplicamos la expresión anterior a dos números como S(S0) y S(S0) se obtiene una expresión con forma normal: S(S(S(S(0))))
Cálculo de los valores de funciones recursivas en el Cálculo ?. Ejemplo
Cálculo de 2+2:
Se puede hacer mediante evaluación total partiendo de la expresión que representa 2+2, que es (YE)22, donde
Y ? ?F.(?u.Fuu)(?v.Fvv)
E ? ?G.?x.?y.?(Nx)y(S(G(Px)y))
2 ? …
es decir
(?F.(?u.F(uu))(?v.F(vv)))(?G.?x.?y.?(Nx)y(S(G(Px)y)))…
Cálculo de los valores de funciones recursivas en el Cálculo ?. Ejemplo
Sustituyendo a medias y evaluando,
+22 ? E+22 ? ?(N2)2(S(+(P2)2) ? S(+(P2)2) ? S(+12)
+12 ? E+12 ? ?(N1)2(S(+(P1)2) ? S(+(P1)2) ? S(+02)
+02 ? E+02 ? ?(N0)2(S(+(P0)2) ? 2
+12 ? S2 ? 3
+22 ? S3 ? 4
Ejercicios
Definir funciones en el Cálculo ? que representen las siguientes funciones:
[LRS] Suma de los n primeros números impares (obligatorio)
[LRP] Producto de dos números
[LRF] Factorial de un número
[LRC] Cociente por defecto de dos números
Mostrar el cálculo de la suma de los dos primeros números impares, 2*2, 3! y 5/2
Cálculo ?: Conclusión
El Cálculo ? es tan potente como el cálculo de funciones recursivas, es decir tan potente como las máquinas de Turing, como las gramáticas, etc
Página anterior | Volver al principio del trabajo | Página siguiente |